

package fr.auzaiphe.admin.model;

import java.util.ArrayList;

import fr.auzaiphe.admin.bdd.BaseDeDonnee;
import fr.auzaiphe.admin.bdd.IndiceBDD;
/**
 *
 * @author Hugp
 * Classe d'indice du scenario.
 *
 */
public class Indice
{
	private IndiceBDD imageBDD;

	private ArrayList<Joueur> joueursLies;
	private ArrayList<Joueur> joueursVisibles;
	private int id;
	private Contenu contenuIndice;
	private String titre;
	private int debutVie;
	private int finVie;
	//Tests liés aux évenements de début ou de fin de vie d'un indice.
	private int on;
	private int off;

	public Indice( BaseDeDonnee pBdd )
	{
		this.id = -1;
		this.contenuIndice = new Contenu();
		this.joueursLies = new ArrayList<Joueur>();
		this.joueursVisibles = new ArrayList<Joueur>();
		this.debutVie = 0;
		this.finVie = 0;
		this.on = 0;
		this.off = 0;

		this.imageBDD = new IndiceBDD( pBdd, this );
		this.imageBDD.afficher();
	}

	public Indice ( BaseDeDonnee pBdd,
					String pContenu,
					String pLienFichier,
					String pTitre,
					int pDebutVie,
					int pFinVie,
					int pOn,
					int pOff)
	{
		this.id = -1;
		this.contenuIndice = new Contenu(pLienFichier,pContenu);
		this.titre = pTitre;
		this.joueursLies = new ArrayList<Joueur>();
		this.joueursVisibles = new ArrayList<Joueur>();
		this.debutVie = pDebutVie;
		this.finVie = pFinVie;
		this.on = pOn;
		this.off = pOff;
		this.imageBDD = new IndiceBDD(pBdd, this);
	}

	public Indice ( int pId,
				BaseDeDonnee pBdd,
				String pContenu,
				String pLienFichier,
				String pTitre,
				int pDebutVie,
				int pFinVie,
				int pOn,
				int pOff)
	{
		this.id = pId;
		this.contenuIndice = new Contenu(pLienFichier,pContenu);
		this.titre = pTitre;
		this.joueursLies = new ArrayList<Joueur>();
		this.joueursVisibles = new ArrayList<Joueur>();
		this.debutVie = pDebutVie;
		this.finVie = pFinVie;
		this.on = pOn;
		this.off = pOff;
		this.imageBDD = new IndiceBDD(pBdd, this);
	}

	public Indice( BaseDeDonnee pBdd,
				   ArrayList<Joueur> pVisibles,
				   ArrayList<Joueur> pLies,
				   String pContenu,
				   String pLienFichier,
				   String pTitre,
				   int pDebutVie,
				   int pFinVie,
				   int pOn,
				   int pOff)
	{
		this.id = -1;
		this.contenuIndice = new Contenu(pLienFichier,pContenu);
		this.titre = pTitre;
		this.joueursVisibles = new ArrayList<Joueur>( pVisibles );
		this.joueursLies = new ArrayList<Joueur>( pLies );
		this.debutVie = pDebutVie;
		this.finVie = pFinVie;
		this.on = pOn;
		this.off = pOff;

		this.imageBDD = new IndiceBDD(pBdd, this);
	}

	public Indice(	int pId,
					BaseDeDonnee pBdd,
					ArrayList<Joueur> pVisibles,
					ArrayList<Joueur> pLies,
					String pContenu,
					String pLienFichier,
					String pTitre,
					int pDebutVie,
					int pFinVie,
					int pOn,
					int pOff)
	{
		this.id = pId;
		this.contenuIndice = new Contenu(pLienFichier,pContenu);
		this.titre = pTitre;
		this.joueursLies = new ArrayList<Joueur>( pLies );
		this.joueursVisibles = new ArrayList<Joueur>( pVisibles );
		this.debutVie = pDebutVie;
		this.finVie = pFinVie;
		this.on = pOn;
		this.off = pOff;

		this.imageBDD = new IndiceBDD(pBdd, this);
	}

	public void supprimer()
	{
		this.imageBDD.supprimer();
	}

	public void update()
	{

	}

	public String getTitle()
	{
		return this.titre;
	}

	public Contenu getContenu()
	{
		return this.contenuIndice;
	}


	public int getDebutVie()
	{
		return this.debutVie;
	}

	public int getFinVie()
	{
		return this.finVie;
	}

	public IndiceBDD getImageBDD()
	{
		return this.imageBDD;
	}

	public int getOn() {
		return this.on;
	}

	public int getOff() {
		return this.off;
	}

	/*public void addJoueurVisible(Joueur pJoueurVisible)
	{
		//Ajoute un le joueur seulement s'il n'est pas dejà dans la liste
		for(Joueur pjv : this.joueursVisibles)
			if(pjv.equals(pJoueurVisible))
				return;
		this.joueursVisibles.add(pJoueurVisible);

	}

	public void addJoueurLie(Joueur pJoueurLie)
	{
		//Ajoute un le joueur seulement s'il n'est pas dejà dans la liste
		for(Joueur pjl : this.joueursLies)
			if(pjl.equals(pJoueurLie))
				return;
		this.joueursLies.add(pJoueurLie);
	}*/

	public boolean equals (Indice pIndice)
	{
		return
			(pIndice instanceof Indice) &&
			pIndice.getContenu().equals(this.contenuIndice) &&
			pIndice.getTitle().equals(this.titre) &&
			pIndice.getDebutVie() == this.debutVie &&
			pIndice.getFinVie() == this.finVie &&
			pIndice.getOn() == this.on &&
			pIndice.getOff() == this.off;
	}

	
	
	/**
	 * @return the id
	 */
	public int getId() {
		return this.id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the joueursLies
	 */
	public ArrayList<Joueur> getJoueursLies()
	{
		return this.joueursLies;
	}

	/**
	 * @return the joueursVisibles
	 */
	public ArrayList<Joueur> getJoueursVisibles()
	{
		return this.joueursVisibles;
	}

	public void addJoueurVisible (Joueur pJoueur)
	{
		this.joueursVisibles.add(pJoueur);
	}
	
	/**
	 * @param joueursVisibles the joueursVisibles to set
	 */
	public void setJoueursVisibles(ArrayList<Joueur> joueursVisibles) {
		this.joueursVisibles = joueursVisibles;
	}

	public void setJoueursLies(ArrayList<Joueur> joueursLies) {
		this.joueursLies = joueursLies;
	}

	public void setContenuIndice(Contenu contenuIndice) {
		this.contenuIndice = contenuIndice;
	}

	public void setTitre(String titre) {
		this.titre = titre;
	}

	public void setDebutVie(int debutVie) {
		this.debutVie = debutVie;
	}

	public void setFinVie(int finVie) {
		this.finVie = finVie;
	}
}
